Socket.io হল একটি শক্তিশালী লাইব্রেরি যা WebSocket এর উপর ভিত্তি করে তৈরি, এবং এটি real-time, bidirectional event-based communication তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত real-time অ্যাপ্লিকেশন যেমন chat applications, live notifications, real-time games, live updates ইত্যাদি তৈরি করতে ব্যবহৃত হয়। React Native অ্যাপ্লিকেশনেও Socket.io ব্যবহার করা যায়। নিচে React Native এর মাধ্যমে Socket.io ব্যবহার করে একটি real-time chat অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া আলোচনা করা হল।
Socket.io Setup:
Socket.io দুটি প্রধান অংশে বিভক্ত:
- Server-side (Backend): এখানে Socket.io server হিসেবে কাজ করে এবং client থেকে আসা সংযোগগুলি পরিচালনা করে।
- Client-side (Frontend): এখানে Socket.io client ব্যবহারকারী ইন্টারফেসের মাধ্যমে server এর সাথে যোগাযোগ করে।
এখানে আমরা Node.js backend এবং React Native frontend ব্যবহার করব।
১. Server-side (Backend)
Socket.io ব্যবহার করার জন্য, প্রথমে আপনাকে একটি Node.js সার্ভার সেটআপ করতে হবে এবং সেখানে Socket.io ইন্টিগ্রেট করতে হবে।
Node.js Server Setup:
- প্রথমে আপনার প্রজেক্ট ফোল্ডারে একটি নতুন Node.js অ্যাপ তৈরি করুন:
mkdir socketio-chat-app
cd socketio-chat-app
npm init -y- এরপর
expressএবংsocket.ioইনস্টল করুন:
npm install express socket.io- তারপর, একটি
server.jsফাইল তৈরি করুন এবং নিচের কোডটি যোগ করুন:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// Serve a simple message at the root
app.get('/', (req, res) => {
res.send('Real-time Chat App');
});
// Listen for incoming client connections
io.on('connection', (socket) => {
console.log('A user connected');
// Listen for chat messages from clients
socket.on('chat message', (msg) => {
console.log('Message: ' + msg);
io.emit('chat message', msg); // Broadcast the message to all connected clients
});
// Handle client disconnect
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
// Start the server
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});কী হচ্ছে:
- Express server তৈরি করা হচ্ছে।
- Socket.io ব্যবহৃত হচ্ছে যে কোনো ক্লায়েন্ট যখন সংযোগ করবে তখন তাকে পরিচালনা করতে এবং মেসেজের আদান-প্রদান করতে।
chat messageইভেন্টের মাধ্যমে ক্লায়েন্টের মেসেজ গ্রহণ করে সেটি সব ক্লায়েন্টকে পাঠানো হচ্ছে।
এখন, Node.js সার্ভার চালু করতে, নিচের কমান্ডটি চালান:
node server.jsএটি আপনার সার্ভারকে http://localhost:3000 তে চালু করবে।
২. Client-side (Frontend - React Native)
React Native অ্যাপ্লিকেশন তৈরির জন্য, আপনাকে Socket.io-client লাইব্রেরি ইনস্টল করতে হবে এবং এই লাইব্রেরি ব্যবহার করে backend server এর সাথে সংযোগ করতে হবে।
React Native App Setup:
- একটি নতুন React Native অ্যাপ তৈরি করুন:
npx react-native init ChatApp
cd ChatApp- তারপর, Socket.io-client ইনস্টল করুন:
npm install socket.io-client- এরপর,
App.jsফাইলে নিচের কোডটি যোগ করুন:
import React, { useState, useEffect } from 'react';
import { View, TextInput, Button, FlatList, Text, StyleSheet } from 'react-native';
import io from 'socket.io-client';
const App = () => {
const [socket, setSocket] = useState(null);
const [message, setMessage] = useState('');
const [messages, setMessages] = useState([]);
useEffect(() => {
// Connect to the server
const newSocket = io('http://localhost:3000');
setSocket(newSocket);
// Listen for chat messages from the server
newSocket.on('chat message', (msg) => {
setMessages((prevMessages) => [...prevMessages, msg]);
});
return () => {
newSocket.disconnect();
};
}, []);
const handleSendMessage = () => {
if (message.trim()) {
socket.emit('chat message', message); // Send message to server
setMessage('');
}
};
return (
<View style={styles.container}>
<FlatList
data={messages}
renderItem={({ item }) => <Text style={styles.message}>{item}</Text>}
keyExtractor={(item, index) => index.toString()}
/>
<TextInput
style={styles.input}
value={message}
onChangeText={setMessage}
placeholder="Type a message"
/>
<Button title="Send" onPress={handleSendMessage} />
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'flex-end',
padding: 10,
},
input: {
height: 40,
borderColor: 'gray',
borderWidth: 1,
marginBottom: 10,
paddingLeft: 10,
},
message: {
fontSize: 18,
padding: 5,
marginVertical: 2,
backgroundColor: '#f1f1f1',
},
});
export default App;কী হচ্ছে:
- Socket.io client এর মাধ্যমে React Native অ্যাপ সার্ভারের সাথে সংযুক্ত হচ্ছে।
- ব্যবহারকারী একটি মেসেজ লিখে পাঠালে, সেটি সার্ভারে পাঠানো হচ্ছে, এবং সার্ভার থেকে নতুন মেসেজ আসলে তা FlatList এর মাধ্যমে UI তে দেখানো হচ্ছে।
- মেসেজ পাঠানো এবং গ্রহণের জন্য socket.emit এবং socket.on ব্যবহার করা হচ্ছে।
৩. Run the Application
Backend (Node.js server) চালু করুন, যদি না চালু করা থাকে:
node server.jsReact Native frontend চালু করুন:
npx react-native run-android # For Android npx react-native run-ios # For iOS
এটি আপনার মোবাইল অ্যাপ্লিকেশনকে চালু করবে, এবং আপনি chat message পাঠানোর এবং real-time আপডেট দেখতে পারবেন।
৪. সারাংশ
- Socket.io ক্লায়েন্ট এবং সার্ভারের মধ্যে real-time যোগাযোগ তৈরি করতে ব্যবহৃত হয়। React Native-এ এটি ব্যবহার করে আপনি সহজেই real-time chat apps এবং live updates তৈরি করতে পারেন।
- Backend (Node.js)-এ
socket.ioসার্ভার সেটআপ করা হয় এবং Frontend (React Native)-এsocket.io-clientব্যবহার করে ক্লায়েন্টের সাথে সংযোগ স্থাপন করা হয়। - এখানে, ব্যবহারকারী মেসেজ পাঠালে, সার্ভার সেটি সব ক্লায়েন্টকে ব্রডকাস্ট করে, যাতে অন্য ব্যবহারকারীরা তা তৎক্ষণাৎ দেখতে পারে।
React Native এর মাধ্যমে Socket.io ব্যবহার করে তৈরি করা real-time অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের জন্য একটি শক্তিশালী এবং ইন্টারেকটিভ অভিজ্ঞতা প্রদান করে।
Read more